package vista.ventanaEstadoTarea;

import java.awt.event.ActionEvent;
import java.util.Date;

import javax.swing.JOptionPane;
import modelo.exception.SameStateException;
import modelo.exception.StatusChangeException;

/**
 * @author Cristian
 * extiende de ButtonAction.
 * */
public class BotonFinalizarTarea extends ButtonAction{

	//Constructor *********************************************************** //
	public BotonFinalizarTarea(VentanaTarea modelo){
		super(modelo);
	}
	
	/**
	 * Boton que determina el estado de la tarea.
	 * Cambia el estado de la tarea de EnTrabajo a Finalizado.
	 * Solo se cambia a ese estado cuando el estado es EnTrabajo, de lo contrario 
	 * lanza una excepcion.
	 * Escribe en un txt la fecha en la que se finalizo y la duracion de trabajo.
	 * Modifica el label de estado y el de porcentaje de Realizacion.
	 * @exception SameStateException.
	 * @exception StatusChangeException.
	 * */
	public void actionPerformed(ActionEvent e) {
		try{
			Date dateCerrado = new Date();
			this.ventana.getModelo().finalizarTarea();
			this.ventana.getEstado().setText(this.ventana.getModelo().getEstado().getNombre());
			this.ventana.getLabelPorcentajeRealizacion().setText(this.ventana.getModelo().porcentajeDeRealizacion()+ "%");
			this.escribir("TIEMPO TRABAJADO: "+ this.ventana.getModelo().getDuracion());
			this.escribir("FINALIZADO EN: "+ dateCerrado);
			this.escribir("");
			
		} catch (SameStateException e1) {
			JOptionPane.showMessageDialog(this.ventana.getFrame().getContentPane(), "No se puede cambiar al mismo estado",
					"Error", JOptionPane.ERROR_MESSAGE);

		} catch (StatusChangeException e1) {
			JOptionPane.showMessageDialog(this.ventana.getFrame().getContentPane(), "No se puede cambiar de estado",
					"Error", JOptionPane.ERROR_MESSAGE);
		}

	}

}
